package entity;

import java.awt.*;

/**
 * 飞行物抽象类 - 所有飞行物体的基类
 */
public abstract class FlyingObject {
    protected int x;  // x坐标
    protected int y;  // y坐标
    protected int width;   // 宽度
    protected int height;  // 高度
    protected Image image; // 图片
    
    /**
     * 移动方法，由子类实现
     */
    public abstract void move();
    
    /**
     * 判断飞行物是否越界
     * @param panelWidth 面板宽度
     * @param panelHeight 面板高度
     * @return 是否越界
     */
    public abstract boolean isOutOfBounds(int panelWidth, int panelHeight);
    
    /**
     * 判断是否存活
     * @return 是否存活
     */
    public abstract boolean isAlive();
    
    /**
     * 获取飞行物的矩形边界，用于碰撞检测
     * @return Rectangle对象
     */
    public Rectangle getRectangle() {
        return new Rectangle(x, y, width, height);
    }
    
    // getter和setter方法
    public int getX() {
        return x;
    }
    
    public void setX(int x) {
        this.x = x;
    }
    
    public int getY() {
        return y;
    }
    
    public void setY(int y) {
        this.y = y;
    }
    
    public int getWidth() {
        return width;
    }
    
    public void setWidth(int width) {
        this.width = width;
    }
    
    public int getHeight() {
        return height;
    }
    
    public void setHeight(int height) {
        this.height = height;
    }
    
    public Image getImage() {
        return image;
    }
    
    public void setImage(Image image) {
        this.image = image;
    }
}